package com.yunsc.order.sevice;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yunsc.common.utils.PageResult;
import com.yunsc.order.dto.ApplyOrderRefundDTO;
import com.yunsc.order.dto.OrderRefundDTO;
import com.yunsc.order.dto.QueryOrderRefundDTO;
import com.yunsc.order.entity.YunscOrderRefundEntity;
import com.yunsc.order.vo.OrderRefundVO;

/**
 * 售后单记录表
 *
 * @author adan
 * @email 2028038953@qq.com
 * @date 2024-04-22 11:35:50
 */
public interface YunscOrderRefundService extends IService<YunscOrderRefundEntity> {

    /**
     * 分页查询售后单记录
     *
     * @param orderRefundDTO 查询条件
     * @param storeId 当前门店ID
     * @return 售后单记录分页数据
     */
    PageResult<OrderRefundVO> queryRefundOrders(QueryOrderRefundDTO orderRefundDTO, Integer storeId);

    /**
     * 审核售后单
     *
     * @param param 审核参数
     */
    void auditOrderRefund(OrderRefundDTO param);

    void refuseAudit(OrderRefundDTO param, YunscOrderRefundEntity orderRefund, Integer auditStatus);

    void auditAgree(OrderRefundDTO param, YunscOrderRefundEntity orderRefund, Integer auditStatus);

    /**
     * 查询售后单详情
     *
     * @param orderRefundId 售后单ID
     * @return 售后单详情
     */
    OrderRefundVO queryRefundOrderDetail(Integer orderRefundId);

    /**
     * 查询用户的售后单列表
     *
     * @param state 售后单状态
     * @param page 页码
     * @param userId 用户ID
     * @return 用户的售后单列表
     */
    PageResult<OrderRefundVO> queryUserRefundOrder(Integer state, Integer page, Integer userId);

    /**
     * 申请售后单
     *
     * @param param 申请参数
     * @param userId 用户ID
     */
    void applyOrderRefund(ApplyOrderRefundDTO param, Integer userId);

    /**
     * 提交用户发货信息
     *
     * @param param 发货参数
     * @param userId 用户ID
     */
    void refundOrderDelivery(OrderRefundDTO param, Integer userId);

    /**
     * 查询用户的售后单详情
     *
     * @param orderRefundId 售后单ID
     * @return 用户的售后单详情
     */
    OrderRefundVO queryUserRefundOrderDetail(Integer orderRefundId);
}

